"""x=int(input("x=?"))
y=2
z=0

while x>1:
    if z==0:
        if x%y==0:
            print(y)
            print(int(x/y))
            x=int(x/y)
            z=x/y
    while y<x+1 and z>0:#3
        y=3
        if x%y==0:
            print(y)
            print(int(x/y))            
            z=x/y
            x=int(x/y)
            y+=x*x
        y+=2
    y=2
"""
"""
x=int(input("x=?"))
y=2
while x>1:
    while y<x+1:
        if x%y==0:
            print(y)          
            x=int(x/y)
            y+=x*x
        if y==2:
            y-=1
        y+=2
    y=2
"""

x=int(input("x=?"))
y=2
z=1
a=y
while x>1 and z==1: 
    z=0
    while y*y<x+1:#3 使用y进行尝试，其中y只需要尝试到 x的平方根就可以
        if x%y==0: # 符合要求
            print(y) # 打印x的一个分解项
            x=int(x/y)
            a=y
            y+=x*x # 向前跳跃，加快遍历，但是为什么是x*x?
            # 如果x,y是原值x的分解,那么下一个可能的分解项
            z=1 # 标记已经找到1个分解项
        if y==2:
            y-=1
        y+=2 #默认的前进步幅，至少的前进步数
    y=a
print(x)